package org.digitarts.rtms.tracing;

import java.util.Date;

import org.digitarts.rtms.tracing.threads.ThreadInfoCapture;


public interface ITracer
{

	public static final String	METRIC_TYPE_LONG				= "LONG";
	public static final String	METRIC_TYPE_INT					= "INT";
	public static final String	METRIC_TYPE_STRING				= "STRING";
	public static final String	METRIC_TYPE_COUNTER_LONG		= "SLONG";
	public static final String	METRIC_TYPE_COUNTER_INT			= "SINT";
	public static final String	METRIC_TYPE_INCIDENT			= "INCIDENT";
	public static final String	METRIC_TYPE_DELTA_INT			= "DINT";
	public static final String	METRIC_TYPE_DELTA_LONG			= "DLONG";
	public static final String	METRIC_TYPE_DELTA_STICKY_INT	= "SDINT";
	public static final String	METRIC_TYPE_DELTA_STICKY_LONG	= "SDLONG";

	void trace(int value, String... name);

	void trace(long value, String... name);

	void trace(String value, String... name);

	void trace(Date value, String... name);

	void traceSticky(int value, String... name);

	void traceSticky(long value, String... name);

	void traceDelta(int value, String... name);

	void traceDelta(long value, String... name);

	void traceDeltaSticky(int value, String... name);

	void traceDeltaSticky(long value, String... name);

	void traceIncident(String... name);

	void traceIncident(int value, String... name);

	void trace(String value, String type, String... name);

	void startThreadInfoCapture(int options);

	void startThreadInfoCapture(int options, boolean nanoTime);

	ThreadInfoCapture endThreadInfoCapture(String... name);

	String lookupRange(String rangeName, long value);

	long sizeOf(Object obj);

}
